Data processing environments often provide multiple resources, such as servers, to handle certain workloads. For example, a popular website or service may be supported by multiple webservers so that requests for the site or service from numerous browsers can be handled efficiently and without unacceptable delays.
The technique for distributing competing or similar workloads across a pool of similar or analogous resources is called load balancing. A load balancer is an application or a component that implements load balancing for a given pool of target resources. Data processing systems and applications are examples of resources, whose multiple instances can be pooled and managed by a load balancer. Requests, data transmissions, and job submissions directed towards such data processing systems or application instances are examples of workloads that a load balancer can direct or manage for the resource pool.
Many different types of algorithms are presently available for load balancing. A load balancer executes a load balancing algorithm to select an instance of a pooled resource to which a given workload should be directed. For example, a random selection algorithm randomly selects any of the instances of the pooled resource and directs the workload at hand to that randomly selected resource instance. As another example, a round-robin algorithm sequences the resources in a pool, and progressively selects the next resource instance in the sequence to handle each subsequent workload.
As another example, a weighted round-robin algorithm implements the round-robin method, and further takes into consideration an amount of load a sequenced resource instance can handle to select an appropriate resource instance in the sequence. For example, if a server in the pool can handle twice the load of another server in the pool, the weighted round-robin algorithm counts the larger server twice in the sequence and the smaller server once, so that the larger server can receive twice the workload, which the larger server can handle.
As another example, a fastest response load balancing algorithm selects the response instance from the pool which can respond to the workload the fastest at a given time. For example, some servers in a given pool may be more congested, utilized beyond a threshold, or have a comparatively lower throughput as compared to another server in the pool. The fastest response algorithm selects a resource with these and other similar considerations to provide the fastest response time for a given workload at a given time with a given pool of resources.